export interface OrderItem {
  asc?: boolean;
  column?: string;
}

// 分页请求参数
export interface ReqPage {
  /**
   * 页码
   */
  pageNo?: number;
  /**
   * 每页显示数据
   */
  pageSize?: number;
}

// 操作日志管理模块
export namespace operationLog {
  // 分页查询模块
  export interface logParams extends ReqPage {
    /**
     * 账号
     */
    account: string;
    /**
     * 归档
     */
    archive: string;
    /**
     * 搜索结束时间
     */
    endTime: Date | string;
    /**
     * 操作
     */
    operate: string;
    /**
     * 操作对象
     */
    operateNote: string;

    /**
     * 角色
     */
    role: string;
    /**
     * 搜索开始时间
     */
    startTime: Date | string;
    /**
     * 姓名
     */
    userName: string;
  }

  export interface LogList {
    /**
     * 账号
     */
    account?: string;
    /**
     * 浏览器
     */
    browser?: string;
    /**
     * 设备
     */
    device?: string;
    /**
     * 主键
     */
    id?: number;
    /**
     * 访问ip
     */
    ip?: string;
    /**
     * ip归属地
     */
    ipAttribution?: string;
    /**
     * 操作
     */
    operate?: string;
    /**
     * 操作对象
     */
    operateNote?: string;
    /**
     * 访问时间
     */
    recordDate?: Date;
    /**
     * 请求参数
     */
    reqParams?: string;
    /**
     * 角色
     */
    role?: string;
    /**
     * 姓名
     */
    userName?: string;
  }
}

// 分页响应参数
export interface ResPage {
  countId?: string;
  current?: number;
  maxLimit?: number;
  optimizeCountSql?: boolean;
  orders?: OrderItem[];
  pages?: number;
  records?: operationLog.LogList[];
  searchCount?: boolean;
  size?: number;
  total?: number;
}

/**
 * 查询参数
 */

export interface ParamsResponse {
  /**
   * 公共返回状态码
   */
  code?: number;
  /**
   * 响应数据
   */
  data?: LogOptionPrams;
  /**
   * 消息
   */
  msg?: string;
}

/**
 * 响应数据
 *
 * 日志配置数据 返回参数
 */
export interface LogOptionPrams {
  /**
   * 归档列表
   */
  archiveList: pigeonhole[];
  /**
   * 操作列表
   */
  operateList: option[];
  /**
   * 角色列表
   */
  roleList: role[];
}
/**
 * 归档 返回参数
 */
export interface pigeonhole {
  /**
   * 账号
   */
  code?: string;
  /**
   * 结束时间
   */
  endDate?: Date;
  /**
   * 姓名
   */
  name?: string;
  /**
   * 开始时间
   */
  startDate?: Date;
}

/**
 * 操作 返回参数
 */
export interface option {
  /**
   * 代码
   */
  code?: string;
  /**
   * 名称
   */
  name?: string;
}

/**
 * 角色 返回参数
 */
export interface role {
  /**
   * 代码
   */
  code?: string;
  /**
   * 名称
   */
  name?: string;
}
